

<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
  <meta charset="utf-8">
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <title>Intent Extraction &mdash; NLP Architect by Intel® AI Lab 0.5.2 documentation</title>
  

  
  
  
  

  
  <script type="text/javascript" src="_static/js/modernizr.min.js"></script>
  
    
      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
        <script type="text/javascript" src="_static/jquery.js"></script>
        <script type="text/javascript" src="_static/underscore.js"></script>
        <script type="text/javascript" src="_static/doctools.js"></script>
        <script type="text/javascript" src="_static/language_data.js"></script>
        <script type="text/javascript" src="_static/install.js"></script>
        <script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
    
    <script type="text/javascript" src="_static/js/theme.js"></script>

    

  
  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
  <link rel="stylesheet" href="_static/nlp_arch_theme.css" type="text/css" />
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto+Mono" type="text/css" />
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:100,900" type="text/css" />
    <link rel="index" title="Index" href="genindex.html" />
    <link rel="search" title="Search" href="search.html" />
    <link rel="next" title="Language Models" href="lm.html" />
    <link rel="prev" title="BIST Dependency Parser" href="bist_parser.html" /> 
</head>

<body class="wy-body-for-nav">

   
  <div class="wy-grid-for-nav">
    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search" >
          

          
            <a href="index.html">
          

          
            
            <img src="_static/logo.png" class="logo" alt="Logo"/>
          
          </a>

          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
            
            
              
            
            
              <ul>
<li class="toctree-l1"><a class="reference internal" href="quick_start.html">Quick start</a></li>
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="publications.html">Publications</a></li>
<li class="toctree-l1"><a class="reference internal" href="tutorials.html">Jupyter Tutorials</a></li>
<li class="toctree-l1"><a class="reference internal" href="model_zoo.html">Model Zoo</a></li>
</ul>
<p class="caption"><span class="caption-text">NLP/NLU Models</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="tagging/sequence_tagging.html">Sequence Tagging</a></li>
<li class="toctree-l1"><a class="reference internal" href="sentiment.html">Sentiment Analysis</a></li>
<li class="toctree-l1"><a class="reference internal" href="bist_parser.html">Dependency Parsing</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Intent Extraction</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#overview">Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="#models">Models</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#multi-task-intent-and-slot-tagging-model">Multi-task Intent and slot tagging model</a></li>
<li class="toctree-l3"><a class="reference internal" href="#encoder-decoder-topology-for-slot-tagging">Encoder-Decoder topology for Slot Tagging</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#datasets">Datasets</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#snips-nlu-benchmark">SNIPS NLU benchmark</a></li>
<li class="toctree-l3"><a class="reference internal" href="#tabularintentdataset">TabularIntentDataset</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#files">Files</a></li>
<li class="toctree-l2"><a class="reference internal" href="#running-modalities">Running Modalities</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#training">Training</a></li>
<li class="toctree-l3"><a class="reference internal" href="#interactive-mode">Interactive mode</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#results">Results</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#references">References</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="lm.html">Language Models</a></li>
<li class="toctree-l1"><a class="reference internal" href="information_extraction.html">Information Extraction</a></li>
<li class="toctree-l1"><a class="reference internal" href="transformers.html">Transformers</a></li>
<li class="toctree-l1"><a class="reference internal" href="archived/additional.html">Additional Models</a></li>
</ul>
<p class="caption"><span class="caption-text">Optimized Models</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="quantized_bert.html">Quantized BERT</a></li>
<li class="toctree-l1"><a class="reference internal" href="transformers_distillation.html">Transformers Distillation</a></li>
<li class="toctree-l1"><a class="reference internal" href="sparse_gnmt.html">Sparse Neural Machine Translation</a></li>
</ul>
<p class="caption"><span class="caption-text">Solutions</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="absa_solution.html">Aspect Based Sentiment Analysis</a></li>
<li class="toctree-l1"><a class="reference internal" href="term_set_expansion.html">Set Expansion</a></li>
<li class="toctree-l1"><a class="reference internal" href="trend_analysis.html">Trend Analysis</a></li>
</ul>
<p class="caption"><span class="caption-text">For Developers</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="generated_api/nlp_architect_api_index.html">nlp_architect API</a></li>
<li class="toctree-l1"><a class="reference internal" href="developer_guide.html">Developer Guide</a></li>
</ul>

            
          
        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" aria-label="top navigation">
        
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="index.html">NLP Architect by Intel® AI Lab</a>
        
      </nav>


      <div class="wy-nav-content">
        
        <div class="rst-content">
        
          















<div role="navigation" aria-label="breadcrumbs navigation">

  <ul class="wy-breadcrumbs">
    
      <li><a href="index.html">Docs</a> &raquo;</li>
        
      <li>Intent Extraction</li>
    
    
      <li class="wy-breadcrumbs-aside">
        
            
        
      </li>
    
  </ul>

  
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
  <div class="section" id="intent-extraction">
<h1>Intent Extraction<a class="headerlink" href="#intent-extraction" title="Permalink to this headline">¶</a></h1>
<div class="section" id="overview">
<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
<p>Intent extraction is a type of Natural-Language-Understanding (NLU) task that helps to understand
the type of action conveyed in the sentences and all its participating parts.</p>
<p>An example of a sentence with intent could be:</p>
<p><strong>Siri, can you please remind me to pickup my laundry on my way home?</strong></p>
<p>The action conveyed in the sentence is to <em>remind</em> the speaker about something. The verb <em>remind</em>
applies that there is an assignee that has to do the action (who?), an assignee that the action
applies to (to whom?) and the object of the action (what?). In this case, <em>Siri</em> has to remind the
<em>speaker</em> to <em>pickup the laundry</em>.</p>
</div>
<div class="section" id="models">
<h2>Models<a class="headerlink" href="#models" title="Permalink to this headline">¶</a></h2>
<div class="section" id="multi-task-intent-and-slot-tagging-model">
<h3>Multi-task Intent and slot tagging model<a class="headerlink" href="#multi-task-intent-and-slot-tagging-model" title="Permalink to this headline">¶</a></h3>
<p><a class="reference internal" href="generated_api/nlp_architect.models.html#nlp_architect.models.intent_extraction.MultiTaskIntentModel" title="nlp_architect.models.intent_extraction.MultiTaskIntentModel"><code class="xref py py-class docutils literal notranslate"><span class="pre">MultiTaskIntentModel</span></code></a> is a Multi-task model that is similar to the joint intent/slot tagging model. The model has 2 sources of input: 1 - words, 2 - characters of words. The model has 3 main features when compared to the other models, character information embedding acting as a feature extractor of the words, a CRF classifier for slot labels, and a cascading structure of the intent and tag classification.
The intent classification is done by encoding the context of the sentences (words <code class="docutils literal notranslate"><span class="pre">x_1,</span> <span class="pre">..,</span> <span class="pre">x_n</span></code>), using word embeddings (denoted as <code class="docutils literal notranslate"><span class="pre">W</span></code>), by a bi-directional LSTM layer, and training a classifier on the last hidden state of the LSTM layer (using <code class="docutils literal notranslate"><span class="pre">softmax</span></code>).
Word-character embeddings (denoted as <code class="docutils literal notranslate"><span class="pre">C</span></code>) are created using a bi-directional LSTM encoder which concatenates the last hidden states of the layers.
The encoding of the word-context, in each time step (word location in the sentence) is concatenated with the word-character embeddings and pushed in another bi-directional LSTM which provides the final context encoding that a CRF layer uses for slot tag classification.</p>
<img alt="_images/mtl_model.png" src="_images/mtl_model.png" />
</div>
<div class="section" id="encoder-decoder-topology-for-slot-tagging">
<h3>Encoder-Decoder topology for Slot Tagging<a class="headerlink" href="#encoder-decoder-topology-for-slot-tagging" title="Permalink to this headline">¶</a></h3>
<p>The Encoder-Decoder LSTM topology is a well known model for sequence-to-sequence classification.
<a class="reference internal" href="generated_api/nlp_architect.models.html#nlp_architect.models.intent_extraction.Seq2SeqIntentModel" title="nlp_architect.models.intent_extraction.Seq2SeqIntentModel"><code class="xref py py-class docutils literal notranslate"><span class="pre">Seq2SeqIntentModel</span></code></a> is a model that is similar to the <em>Encoder-Labeler Deep LSTM(W)</em> model shown in <a class="footnote-reference" href="#id8" id="id1">[2]</a>.
The <a class="reference internal" href="generated_api/nlp_architect.models.html#nlp_architect.models.intent_extraction.Seq2SeqIntentModel" title="nlp_architect.models.intent_extraction.Seq2SeqIntentModel"><code class="xref py py-class docutils literal notranslate"><span class="pre">model</span></code></a> support arbitrary depths of LSTM layers in both encoder and decoder.</p>
<img alt="_images/enc-dec_model.png" src="_images/enc-dec_model.png" />
</div>
</div>
<div class="section" id="datasets">
<h2>Datasets<a class="headerlink" href="#datasets" title="Permalink to this headline">¶</a></h2>
<div class="section" id="snips-nlu-benchmark">
<h3>SNIPS NLU benchmark<a class="headerlink" href="#snips-nlu-benchmark" title="Permalink to this headline">¶</a></h3>
<p>A NLU benchmark <a class="footnote-reference" href="#id11" id="id2">[5]</a> containing ~16K sentences with 7 intent types. Each intent has about 2000 sentences
for training the model and 100 sentences for validation. <a class="reference internal" href="generated_api/nlp_architect.data.html#nlp_architect.data.intent_datasets.SNIPS" title="nlp_architect.data.intent_datasets.SNIPS"><code class="xref py py-class docutils literal notranslate"><span class="pre">SNIPS</span></code></a> is a class that loads the dataset from the repository and encodes the data into BIO format. The words are encoded with sparse int representation and word characters are extracted for character embeddings.</p>
<p>The dataset can be downloaded from <a class="reference external" href="https://github.com/snipsco/nlu-benchmark">https://github.com/snipsco/nlu-benchmark</a>, and more info on the benchmark can be found <a class="reference external" href="https://medium.com/snips-ai/benchmarking-natural-language-understanding-systems-google-facebook-microsoft-and-snips-2b8ddcf9fb19">here</a>. The terms and conditions of the data set license apply. Intel does not grant any rights to the data files.</p>
<p>Once the dataset is downloaded, use the following path <code class="docutils literal notranslate"><span class="pre">&lt;SNIPS</span> <span class="pre">folder&gt;/2017-06-custom-intent-engines</span></code> as the dataset path when using  <a class="reference internal" href="generated_api/nlp_architect.data.html#nlp_architect.data.intent_datasets.SNIPS" title="nlp_architect.data.intent_datasets.SNIPS"><code class="xref py py-class docutils literal notranslate"><span class="pre">SNIPS</span></code></a> data loader.</p>
</div>
<div class="section" id="tabularintentdataset">
<h3>TabularIntentDataset<a class="headerlink" href="#tabularintentdataset" title="Permalink to this headline">¶</a></h3>
<p>We provide an additional dataset loader  <a class="reference internal" href="generated_api/nlp_architect.data.html#nlp_architect.data.intent_datasets.TabularIntentDataset" title="nlp_architect.data.intent_datasets.TabularIntentDataset"><code class="xref py py-class docutils literal notranslate"><span class="pre">TabularIntentDataset</span></code></a> which can parse tabular data in the format of:</p>
<ul class="simple">
<li>each word encoded in a separate line: <code class="docutils literal notranslate"><span class="pre">&lt;token&gt;</span> <span class="pre">&lt;token_tag&gt;</span> <span class="pre">&lt;intent_type&gt;</span></code></li>
<li>sentences are separated with an empty line</li>
</ul>
<p>The dataset loader extracts word and character sparse encoding and label/intent tags per sentence. This data-loader is useful for many intent extraction datasets that can be found on the web and used in academic literature (such as ATIS <a class="footnote-reference" href="#id9" id="id3">[3]</a> <a class="footnote-reference" href="#id10" id="id4">[4]</a>, Conll, etc.).</p>
</div>
</div>
<div class="section" id="files">
<h2>Files<a class="headerlink" href="#files" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li><strong>examples/intent_extraction/train_enc-dec_model.py</strong>: training script to train a <a class="reference internal" href="generated_api/nlp_architect.models.html#nlp_architect.models.intent_extraction.Seq2SeqIntentModel" title="nlp_architect.models.intent_extraction.Seq2SeqIntentModel"><code class="xref py py-class docutils literal notranslate"><span class="pre">Seq2SeqIntentModel</span></code></a> model.</li>
<li><strong>examples/intent_extraction/train_mtl_model.py</strong>: training script to train a <a class="reference internal" href="generated_api/nlp_architect.models.html#nlp_architect.models.intent_extraction.MultiTaskIntentModel" title="nlp_architect.models.intent_extraction.MultiTaskIntentModel"><code class="xref py py-class docutils literal notranslate"><span class="pre">MultiTaskIntentModel</span></code></a> model.</li>
<li><strong>examples/intent_extraction/interactive.py</strong>: Inference script to run an input sentence using a trained model.</li>
</ul>
</div>
<div class="section" id="running-modalities">
<h2>Running Modalities<a class="headerlink" href="#running-modalities" title="Permalink to this headline">¶</a></h2>
<div class="section" id="training">
<h3>Training<a class="headerlink" href="#training" title="Permalink to this headline">¶</a></h3>
<p>An example for training a multi-task model (predicts slot tags and intent type) using SNIPS dataset:</p>
<div class="code python highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">examples</span><span class="o">/</span><span class="n">intent_extraction</span><span class="o">/</span><span class="n">train_mtl_model</span><span class="o">.</span><span class="n">py</span> <span class="o">--</span><span class="n">dataset_path</span> <span class="o">&lt;</span><span class="n">dataset</span> <span class="n">path</span><span class="o">&gt;</span> <span class="o">-</span><span class="n">b</span> <span class="mi">10</span> <span class="o">-</span><span class="n">e</span> <span class="mi">10</span>
</pre></div>
</div>
<p>An example for training an Encoder-Decoder model (predicts only slot tags) using SNIPS, GloVe word embedding model of size 100 and saving the model weights to <cite>my_model.h5</cite>:</p>
<div class="code python highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">examples</span><span class="o">/</span><span class="n">intent_extraction</span><span class="o">/</span><span class="n">train_enc</span><span class="o">-</span><span class="n">dec_model</span><span class="o">.</span><span class="n">py</span> \
  <span class="o">--</span><span class="n">embedding_model</span> <span class="o">&lt;</span><span class="n">path_to_glove_100_file</span><span class="o">&gt;</span> \
  <span class="o">--</span><span class="n">token_emb_size</span> <span class="mi">100</span> \
  <span class="o">--</span><span class="n">dataset_path</span> <span class="o">&lt;</span><span class="n">path_to_data</span><span class="o">&gt;</span> \
  <span class="o">--</span><span class="n">model_path</span> <span class="n">my_model</span><span class="o">.</span><span class="n">h5</span>
</pre></div>
</div>
<p>To list all possible parameters: <code class="docutils literal notranslate"><span class="pre">python</span> <span class="pre">train_joint_model.py/train_enc-dec_model.py</span> <span class="pre">-h</span></code></p>
</div>
<div class="section" id="interactive-mode">
<h3>Interactive mode<a class="headerlink" href="#interactive-mode" title="Permalink to this headline">¶</a></h3>
<p>Interactive mode allows to run sentences on a trained model (either of two) and get the results of the models displayed interactively.
Example:</p>
<div class="code python highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">examples</span><span class="o">/</span><span class="n">intent_extraction</span><span class="o">/</span><span class="n">interactive</span><span class="o">.</span><span class="n">py</span> <span class="o">--</span><span class="n">model_path</span> <span class="n">model</span><span class="o">.</span><span class="n">h5</span> <span class="o">--</span><span class="n">model_info_path</span> <span class="n">model_info</span><span class="o">.</span><span class="n">dat</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="results">
<h2>Results<a class="headerlink" href="#results" title="Permalink to this headline">¶</a></h2>
<p>Results for SNIPS NLU dataset and ATIS are published below. The reference results were taken from the originating paper.
Minor differences might occur in final results. Each model was trained for 100 epochs with default parameters.</p>
<p><strong>SNIPS</strong></p>
<table border="1" class="colwidths-given docutils">
<colgroup>
<col width="20%" />
<col width="40%" />
<col width="40%" />
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head">&#160;</th>
<th class="head">Joint task</th>
<th class="head">Encoder-Decoder</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><td>Slots</td>
<td>97</td>
<td>85.96</td>
</tr>
<tr class="row-odd"><td>Intent</td>
<td>99.14</td>
<td>&#160;</td>
</tr>
</tbody>
</table>
<p><strong>ATIS</strong></p>
<table border="1" class="colwidths-given docutils">
<colgroup>
<col width="14%" />
<col width="29%" />
<col width="29%" />
<col width="14%" />
<col width="14%" />
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head">&#160;</th>
<th class="head">Joint task</th>
<th class="head">Encoder-Decoder</th>
<th class="head">[1]</th>
<th class="head">[2]</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><td>Slots</td>
<td>95.52</td>
<td>93.74</td>
<td>95.48</td>
<td>95.47</td>
</tr>
<tr class="row-odd"><td>Intent</td>
<td>96.08</td>
<td>&#160;</td>
<td>&#160;</td>
<td>&#160;</td>
</tr>
</tbody>
</table>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">We used ATIS <a class="footnote-reference" href="#id9" id="id5">[3]</a> <a class="footnote-reference" href="#id10" id="id6">[4]</a> dataset from: <a class="reference external" href="https://github.com/Microsoft/CNTK/tree/master/Examples/LanguageUnderstanding/ATIS/Data">https://github.com/Microsoft/CNTK/tree/master/Examples/LanguageUnderstanding/ATIS/Data</a>. Intel does not grant any rights to the data files.</p>
</div>
<div class="section" id="references">
<h3>References<a class="headerlink" href="#references" title="Permalink to this headline">¶</a></h3>
<table class="docutils footnote" frame="void" id="id7" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label">[1]</td><td>Hakkani-Tur, Dilek and Tur, Gokhan and Celikyilmaz, Asli and Chen, Yun-Nung and Gao, Jianfeng and Deng, Li and Wang, Ye-Yi. <a class="reference external" href="https://www.csie.ntu.edu.tw/~yvchen/doc/IS16_MultiJoint.pdf">Multi-Domain Joint Semantic Frame Parsing using Bi-directional RNN-LSTM</a>.</td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="id8" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id1">[2]</a></td><td>Gakuto Kurata, Bing Xiang, Bowen Zhou, Mo Yu. <a class="reference external" href="https://arxiv.org/abs/1601.01530">Leveraging Sentence-level Information with Encoder LSTM for Semantic Slot Filling</a>.</td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="id9" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label">[3]</td><td><em>(<a class="fn-backref" href="#id3">1</a>, <a class="fn-backref" href="#id5">2</a>)</em> <ol class="last upperalpha simple" start="3">
<li>Hemphill, J. Godfrey, and G. Doddington, The TabularIntentDataset spoken language systems pilot corpus, in Proc. of the DARPA speech and natural language workshop, 1990.</li>
</ol>
</td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="id10" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label">[4]</td><td><em>(<a class="fn-backref" href="#id4">1</a>, <a class="fn-backref" href="#id6">2</a>)</em> <ol class="last upperalpha simple" start="16">
<li>Price, Evaluation of spoken language systems: The TabularIntentDataset domain, in Proc. of the Third DARPA Speech and Natural Language Workshop. Morgan Kaufmann, 1990.</li>
</ol>
</td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="id11" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id2">[5]</a></td><td>Alice Coucke and Alaa Saade and Adrien Ball and Théodore Bluche and Alexandre Caulier and David Leroy and Clément Doumouro and Thibault Gisselbrecht and Francesco Caltagirone and Thibaut Lavril and Maël Primet and Joseph Dureau. <a class="reference external" href="https://arxiv.org/abs/1805.10190">Snips Voice Platform: an embedded Spoken Language Understanding system for private-by-design voice interfaces.</a></td></tr>
</tbody>
</table>
</div>
</div>
</div>


           </div>
           
          </div>
          <footer>
  

  <hr/>

  <div role="contentinfo">
    <p>

    </p>
  </div>
  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 

</footer>

        </div>
      </div>

    </section>

  </div>
  


  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script>

  
  
    
   

</body>
</html>